Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AAELF64][SYSVABI64] Move dynamic linking contents to sysvabi64 #228

Merged
merged 1 commit into from
Nov 21, 2023

Conversation

smithp35
Copy link
Contributor

The Elf for the Arm 64-bit Architecture (aaelf64) describes the processor specific parts of the ELF specification common to all ELF environments from a statically linked freestanding environment with no OS to a hosted environment that supports dynamic linking.

The dynamic linking parts that are specific to SystemV style operating environments such as Linux, and in particular the GNU properties which are based on a Linux ABI extension are better documented in the SystemV ABI for Arm 64-bit Architecture.

smithp35 added a commit to smithp35/abi-aa that referenced this pull request Nov 3, 2023
Add a design rationale for use of GNU properties as well as
guidelines for how these should be used for properties in
the AArch64 processor space.

Pull request ARM-software#228 moves
the GNU properties and other dynamic section properties specific
to SystemV ABI to the SystemV ABI document.

Arm has typically left metadata in exectuables and shared-libraries
to the platform. Only defining metadata for relocatable objects.
With platforms such as Linux the most frequently run software on
AArch64, Arm needs to document the metadata that it is using for
SystemV platforms.

We have chosen to use GNU properties and to document these in
the sysvabi64.rst document.
smithp35 added a commit to smithp35/abi-aa that referenced this pull request Nov 3, 2023
Add a design rationale for use of GNU properties as well as
guidelines for how these should be used for properties in
the AArch64 processor space.

Pull request ARM-software#228 moves
the GNU properties and other dynamic section properties specific
to SystemV ABI to the SystemV ABI document.

Arm has typically left metadata in exectuables and shared-libraries
to the platform. Only defining metadata for relocatable objects.
With platforms such as Linux the most frequently run software on
AArch64, Arm needs to document the metadata that it is using for
SystemV platforms.

We have chosen to use GNU properties and to document these in
the sysvabi64.rst document.
Its use is optional, meaning that an ELF file where this feature bit
is unset can still have Return Address signing enabled in some or all of
its executable sections.
The information on Program Property has been moved to `SYSVABI64_`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SYSVABI64_ (here and in the other instances below) should be [SYSVABI64_] so that it's rendered as a link in the PDF.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for spotting, I'll post an update (will use amend so it stays in one commit).

The Elf for the Arm 64-bit Architecture (aaelf64) describes the
processor specific parts of the ELF specification common to all
ELF environments from a statically linked freestanding environment
with no OS to a hosted environment that supports dynamic linking.

The dynamic linking parts that are specific to SystemV style
operating environments such as Linux, and in particular the
GNU properties which are based on a Linux ABI extension are
better documented in the SystemV ABI for Arm 64-bit
Architecture.
Copy link

@john-brawn-arm john-brawn-arm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes look OK to me.

@smithp35 smithp35 merged commit 12adea4 into ARM-software:main Nov 21, 2023
1 check passed
Its use is optional, meaning that an ELF file where this feature bit
is unset can still have Return Address signing enabled in some or all of
its executable sections.
The information on Program Property has been moved to [SYSVABI64_].
Copy link

@sallyarmneale sallyarmneale Aug 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The information on Program Property has been moved to....

Repeat for the next 3 sections.

Copy link

@sallyarmneale sallyarmneale left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor changes in phrasing

executable segments of executables and shared objects that do not have
``GNU_PROPERTY_AARCH64_FEATURE_1_BTI`` set, before execution is transferred
to them.
The information on program loading has been moved to [SYSVABI64_].

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See previous comment

instructions, it must add both ``DT_AARCH64_BTI_PLT`` and
``DT_AARCH64_PAC_PLT`` tags to the dynamic section.

The information on Dynamic Linking has been moved to [SYSVABI64_].

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See previous comment


``DT_AARCH64_PAC_PLT`` indicates PLTs enabled with Pointer Authentication.
The information on the Dynamic Section has been moved to [SYSVABI64_].

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See previous comment

``DT_AARCH64_VARIANT_PCS`` must be present if there are ``R_<CLS>_JUMP_SLOT``
relocations that reference symbols marked with the ``STO_AARCH64_VARIANT_PCS``
flag set in their ``st_other`` field.
The information on custom PLTs has been moved to [SYSVABI64_].

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See previous comment

@stuij
Copy link
Member

stuij commented Aug 12, 2024

phrasing suggestions addressed by #278

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants